package com.southminority.ethnic.common.util;

import com.southminority.ethnic.common.context.UserContext;
import com.southminority.ethnic.pojo.User;

/**
 * 管理员权限验证工具类
 * 提供静态方法来判断用户是否有管理员权限
 * 
 * @author SouthMinority
 */
public class AdminAuthUtil {

    /**
     * 检查当前用户是否为管理员
     * @return true-是管理员，false-不是管理员
     */
    public static boolean isAdmin() {
        User currentUser = UserContext.getCurrentUser();
        return currentUser != null && isAdmin(currentUser.getUserType());
    }

    /**
     * 检查指定用户类型是否为管理员
     * @param userType 用户类型
     * @return true-是管理员，false-不是管理员
     */
    public static boolean isAdmin(Integer userType) {
        return userType != null && userType != 0;
    }

    /**
     * 检查当前用户是否为超级管理员
     * @return true-是超级管理员，false-不是超级管理员
     */
    public static boolean isSuperAdmin() {
        User currentUser = UserContext.getCurrentUser();
        return currentUser != null && isSuperAdmin(currentUser.getUserType());
    }

    /**
     * 检查指定用户类型是否为超级管理员
     * @param userType 用户类型
     * @return true-是超级管理员，false-不是超级管理员
     */
    public static boolean isSuperAdmin(Integer userType) {
        return userType != null && userType == 2;
    }

    /**
     * 检查当前用户是否为普通管理员
     * @return true-是普通管理员，false-不是普通管理员
     */
    public static boolean isNormalAdmin() {
        User currentUser = UserContext.getCurrentUser();
        return currentUser != null && isNormalAdmin(currentUser.getUserType());
    }

    /**
     * 检查指定用户类型是否为普通管理员
     * @param userType 用户类型
     * @return true-是普通管理员，false-不是普通管理员
     */
    public static boolean isNormalAdmin(Integer userType) {
        return userType != null && userType == 1;
    }

    /**
     * 检查当前用户是否为普通用户
     * @return true-是普通用户，false-不是普通用户
     */
    public static boolean isNormalUser() {
        User currentUser = UserContext.getCurrentUser();
        return currentUser != null && isNormalUser(currentUser.getUserType());
    }

    /**
     * 检查指定用户类型是否为普通用户
     * @param userType 用户类型
     * @return true-是普通用户，false-不是普通用户
     */
    public static boolean isNormalUser(Integer userType) {
        return userType != null && userType == 0;
    }

    /**
     * 获取当前用户的用户类型
     * @return 用户类型，如果未登录返回null
     */
    public static Integer getCurrentUserType() {
        User currentUser = UserContext.getCurrentUser();
        return currentUser != null ? currentUser.getUserType() : null;
    }

    /**
     * 获取用户类型描述
     * @param userType 用户类型
     * @return 用户类型描述
     */
    public static String getUserTypeDescription(Integer userType) {
        if (userType == null) {
            return "未知";
        }
        switch (userType) {
            case 0:
                return "普通用户";
            case 1:
                return "普通管理员";
            case 2:
                return "超级管理员";
            default:
                return "未知类型";
        }
    }

    /**
     * 检查当前用户是否有权限访问指定功能
     * @param requiredUserType 所需的最低用户类型
     * @return true-有权限，false-无权限
     */
    public static boolean hasPermission(Integer requiredUserType) {
        User currentUser = UserContext.getCurrentUser();
        if (currentUser == null || currentUser.getUserType() == null) {
            return false;
        }
        return currentUser.getUserType() >= requiredUserType;
    }
} 